package com.ls.pattern.common.util;

import com.alibaba.fastjson.JSON;

import java.util.List;

/**
 * Json工具类
 *
 * @author 挥之以墨
 */
public class DeepCloneUtil {

    /**
     * 克隆对象
     *
     * @param source      被克隆的源对象
     * @param targetClazz 克隆目标对象的类型
     * @param <T>         目标对象泛型
     * @return 克隆模板对象
     */
    public static <T> T cloneObject(Object source, Class<T> targetClazz) {
        String jsonString = JSON.toJSONString(source);
        return JSON.parseObject(jsonString, targetClazz);
    }

    /**
     * 克隆List对象
     *
     * @param source      被克隆的源对象
     * @param targetClazz 克隆目标对象的类型
     * @param <T>         目标对象泛型
     * @return 克隆模板对象
     */
    public static <T> List<T> cloneList(List<?> source, Class<T> targetClazz) {
        String jsonString = JSON.toJSONString(source);
        return JSON.parseArray(jsonString, targetClazz);
    }

}
